package com.freeheart.aop.antireapte;


import org.springframework.core.annotation.AliasFor;

import java.lang.annotation.*;


@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface AntiRepeatSubmit {

    @AliasFor("key")
    String value() default "";

    /**
     * 获取锁的Key。支持SPEL表达式。
     *
     * @return key
     */
    @AliasFor("value")
    String key() default "";


    /**
     * 当重复提交时的应对策略
     *
     * @return RefuseStrategy
     */
    RefuseStrategy onRepeatSubmit() default RefuseStrategy.RETURN_NULL;

    /**
     * 拒绝策略
     */
    enum RefuseStrategy {
        /**
         * 返回null
         */
        RETURN_NULL,
        /**
         * 抛出异常
         */
        THROW_EXCEPTION
    }
}
